package com.lagou.solr.position.service.impl;

import com.lagou.solr.position.dto.SolrQueryDTO;
import com.lagou.solr.position.service.SolrDemoService;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.List;

/**
 * Solr服务实现类
 * @author yzh
 */
@Service
public class SolrDemoServiceImpl<T> implements SolrDemoService<T> {

    @Autowired
    private SolrClient solrClient;

    @Override
    public List<T> querySolrBeanList(Class clazz, SolrQueryDTO solrQueryDTO) {
        try {
            SolrQuery solrQuery = new SolrQuery();
            //设置默认搜索域
            solrQuery.set("df", "positionName");
            //设置查询条件
            solrQuery.setQuery(solrQueryDTO.getQuery());
            //设置开始条数
            solrQuery.setStart(solrQueryDTO.getStart());
            //设置条数
            solrQuery.setRows(solrQueryDTO.getRow());
            //设置排序条件
            solrQuery.setSort("id", SolrQuery.ORDER.asc);
            //进行查询
            QueryResponse queryResponse = solrClient.query(solrQuery);
            List<T> beanList = queryResponse.getBeans(clazz);
            if(beanList == null) {
                return null;
            }
            return beanList;
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
